package daily;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author MtRider
 * @version 1.0
 * @description 字符串中的第一个唯一字符
 *
 * 输入: s = "leetcode"
 * 输出: 0
 *
 * @GiteeAndGithub MtRider
 * @date 2022/4/24 10:39
 */
public class demo13 {
    public static void main(String[] args) {
        String s="aabb";
        System.out.println(firstUniqChar(s));
    }

    //HashMap是无序的，所以使用了LinkedHashMap
    public static int firstUniqChar(String s) {
        Map<Character, Integer> map = new LinkedHashMap<>();
        for (int i = 0; i < s.length(); i++) {
            if(null==map.get(s.charAt(i))){
                map.put(s.charAt(i),1);
            }else{
                map.put(s.charAt(i),map.get(s.charAt(i))+1);
            }
        }

        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
            if (entry.getValue() == 1){
                return s.indexOf(entry.getKey());
            }
        }
        return -1;
    }

    //indexOf lastIndexOf 下标是否一样
    public static int firstUniqChar2(String s) {
        for (int i = 0; i < s.length(); i++) {
            if(s.indexOf(s.charAt(i)) == s.lastIndexOf(s.charAt(i))){
                return i;
            }
        }
        return -1;
    }
}
